package com.jinzheng.qhwocket.util;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.tomcat.util.buf.HexUtils;
import java.util.HashMap;
import java.util.Map;

@Slf4j
public class TestData {

    public static void main(String[] args) {
        String values = "232301FE393031323835303730303030303030303001001E160C0F0B061B000438393836303242363033313730303230313830340100A5";
        //String values = "232302FE393031323835303730303030303030303001015B160C0C0923310101030100290007F09E0C3027353E010E27100065020101013C4F4B4EF9280C802727050006F61A3C0262203F0601010EB201010E3701012901012907FF00000000FFFFFFFF0801010C30273500540001540EA10EA10E9D0EA00EA10EA10EA10EA10EA40EA40EA60EA70EB00EAD0E9E0EAF0EAC0EA90EAD0EAC0EB00EAC0EAF0EAF0EA70EA70EA40EA60EA30EA40EA60EA60EA40EA60EA70EA70EAD0EAD0EAD0EA90EAD0EA90EAD0EAF0EAF0EA90EAD0EAD0EA30EA90EA90EA90EA60EA10EA90EA00EA60EA60EAA0EAA0EA70EA40EA40EA40EA60EA40E370EA70EA90E640EA40EAA0EA70EA60EA60EA30E890EA70EA70EA40EA10EA90EA70EA1090101002A2929292929292929292929292929292929292929292929292929292929292929292929292929292929290A00250200A858C0080103000000053EFFFFFFFFFFFFFFFFFF000000050101000003376E100800000C0001FF72";
        //String values = "232305fe3433303030304c41393031303030303030010029160c140b25330000202020202020616263313233202020202020202020202020202061626331323301f3";
        String substring = values.substring(44, 48);
        System.out.println("十六进制值："+substring);
        int x=covert(substring);
        System.out.println("十六进制转十进制值："+x);
        String substring1 = values.substring(0, 48);
        System.out.println("前48位数据长度："+substring1.length());
        System.out.println("前48位数据值："+substring1);
        String substring2 = StringUtils.substring(values,48,(48+x*2));
        System.out.println("根据十进制数截取值长度："+substring2.length());
        System.out.println("根据十进制数截取值："+substring2);
        System.out.println("前48位数据值+根据十进制数截取值：\n"+substring1+substring2);
        System.out.println("前48位数据值+根据十进制数截取值长度："+(substring1+substring2).length());
        String reverse = StringUtils.reverse(values);
        String substring3 = reverse.substring(0, 2);
        System.out.println("最后2位数据值："+StringUtils.reverse(substring3));
        System.out.println("根据十进制数截取值+最后2位数据值：\n"+substring2+StringUtils.reverse(substring3));
        System.out.println("前48位数据值+根据十进制数截取值+最后2位数据值：\n"+substring1+substring2+StringUtils.reverse(substring3));
        System.out.println("源数据值：\n"+values);
        System.out.println("源数据长度："+values.length());
        System.out.println("********待发送kafka数据是哪一段数据********");

    }

    /**
     * 数据校验
     * @param bytes
     * @return
     */
    public static boolean checkCode(byte[] bytes){
        if(null==bytes || bytes.length < 25 || bytes[0]!=2323 || bytes[1]!=2323){
            log.warn("数据格式错误：{}", HexUtils.toHexString(bytes));
            return false;
        }
        byte checkCode = 0x00;
        for (byte bt:bytes){
            checkCode ^= bt;
        }
        if(checkCode!=0x00){
            log.warn("数据校验错误：{}", HexUtils.toHexString(bytes));
            return false;
        }
        return true;
    }

    public static int covert(String content){
        int number=0;
        String [] HighLetter = {"A","B","C","D","E","F"};
        Map<String,Integer> map = new HashMap<>();
        for(int i = 0;i <= 9;i++){
            map.put(i+"",i);
        }
        for(int j= 10;j<HighLetter.length+10;j++){
            map.put(HighLetter[j-10],j);
        }
        String[]str = new String[content.length()];
        for(int i = 0; i < str.length; i++){
            str[i] = content.substring(i,i+1);
        }
        for(int i = 0; i < str.length; i++){
            number += map.get(str[i])*Math.pow(16,str.length-1-i);
        }
        return number;
    }

}
